package com.haoyi.json.transfer;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
/**
 *  Gson类：解析json的最基础的工具类
	JsonParser类：解析器来解析JSON到JsonElements的解析树
	JsonElement类：一个类代表的JSON元素
	JsonObject类：JSON对象类型
	JsonArray类：JsonObject数组
	TypeToken类：用于创建type，比如泛型List<?>
	(1)maven依赖
	<dependency>
	            <groupId>com.google.code.gson</groupId>
	            <artifactId>gson</artifactId>
	            <version>2.3</version>
	</dependency>
 * @author sw-dinghongxu
 *
 */
public class GsonTest {
	
	public static void main(String args[]){
		Gson gson = new Gson();
		
		Book book = new Book();
		book.setId("1");
		book.setName("钢铁是怎样炼成的");
		String jsonStr = gson.toJson(book);
		System.out.println(jsonStr);
		Student stu = new Student();
		stu.setAge(2);
		stu.setDescribe("俄国作家拙作");
		stu.setName("张山");
		stu.setSex("男");
		Set<Book> set = new HashSet<Book>();
		set.add(book);
		System.out.println(gson.toJson(stu));
		
		String json = "{\"id\":\"2\",\"name\":\"Json技术\"}";
		Book book2 = gson.fromJson(json, Book.class);
		System.out.println(book2.getName());
		
		String jsonArray = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
		List<Book> bookList = gson.fromJson(jsonArray, new TypeToken<List<Book>>(){}.getType());
		Set set1 = gson.fromJson(json,new TypeToken<Set>() {}.getType());
		
		for(Book bookSub : bookList){
			System.out.println(bookSub.getName());
		}
		
		//json中日期格式的处理
		GsonBuilder builder = new GsonBuilder();
		builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		Gson gsonDate = builder.create();
		//然后使用gson对象进行json的处理，如果出现日期Date类的对象，就会按照设置的格式进行处理
	}

}
